From 889909342cd9342babe2ca738d2d81c639a38050 Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Wed, 14 Feb 2018 11:22:02 -0500 Subject: [PATCH] Don't store conflicting_activations for backtracking. If we need it later we can always add it back in. --- src/cargo/core/resolver/mod.rs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index e354d6029..633ae2560 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -536,7 +536,6 @@ struct BacktrackFrame<'a> { parent: Summary, dep: Dependency, features: Rc>, - conflicting_activations: HashSet, } #[derive(Clone)] @@ -591,7 +590,6 @@ fn activate_deps_loop<'a>(mut cx: Context<'a>, // use (those with more candidates). let mut backtrack_stack = Vec::new(); let mut remaining_deps = BinaryHeap::new(); - let mut conflicting_activations; for &(ref summary, ref method) in summaries { debug!("initial activation: {}", summary.package_id()); let candidate = Candidate { summary: summary.clone(), replace: None }; @@ -664,7 +662,6 @@ fn activate_deps_loop<'a>(mut cx: Context<'a>, remaining: RcVecIter::new(Rc::clone(&candidates)), conflicting_prev_active: HashSet::new(), }; - conflicting_activations = HashSet::new(); (candidates.next(prev_active), candidates.clone().next(prev_active).is_ok(), candidates) @@ -695,13 +692,11 @@ fn activate_deps_loop<'a>(mut cx: Context<'a>, parent: Summary::clone(&parent), dep: Dependency::clone(&dep), features: Rc::clone(&features), - conflicting_activations: conflicting_activations.clone(), }); } candidate } Err(mut conflicting) => { - conflicting_activations.extend(conflicting.drain()); // This dependency has no valid candidate. Backtrack until we // find a dependency that does have a candidate to try, and try // to activate that one. This resets the `remaining_deps` to @@ -715,10 +710,10 @@ fn activate_deps_loop<'a>(mut cx: Context<'a>, &mut cur, &mut dep, &mut features, - &mut conflicting_activations) { + &mut conflicting) { None => return Err(activation_error(&cx, registry, &parent, &dep, - conflicting_activations, + conflicting, &candidates, config)), Some(candidate) => candidate, } @@ -787,7 +782,6 @@ fn find_candidate<'a>( *parent = frame.parent.clone(); *dep = frame.dep.clone(); *features = Rc::clone(&frame.features); - *conflicting_activations = frame.conflicting_activations.clone(); backtrack_stack.push(frame); } else { *cx = frame.context_backup; @@ -795,7 +789,6 @@ fn find_candidate<'a>( *parent = frame.parent; *dep = frame.dep; *features = frame.features; - *conflicting_activations = frame.conflicting_activations } return Some(candidate); } -- 2.30.2